package com.ruoyi.system.domain;

import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 员工计费项配置对象 employee_billing_items
 *
 * @author ruoyi
 * @date 2025-05-23
 */
public class EmployeeBillingItems extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 计费项唯一标识符（自增数字ID） */
    private Long id;

    /** 员工计费项名称（如"加班费"、"差旅补贴"） */
    @Excel(name = "员工计费项名称")
    private String itemName;

    /** 项目分类编码（如"LABOR"表示人工类、"REIM"表示报销类） */
    @Excel(name = "项目分类编码")
    private String categoryCode;

    /** 项目分类名称（如"人工费用"、"报销费用"） */
    @Excel(name = "项目分类名称")
    private String categoryName;

    /** 关联项目名称（如"2023年Q4项目A"） */
    @Excel(name = "关联项目名称")
    private String projectName;

    /** 计费规则（JSON格式，存储规则详情，如计算方式、适用范围等） */
    @Excel(name = "计费规则", readConverterExp = "J=SON格式，存储规则详情，如计算方式、适用范围等")
    private String billingRule;

    /** 计费规则描述（人类可读的文字说明） */
    @Excel(name = "计费规则描述", readConverterExp = "人=类可读的文字说明")
    private String ruleDescription;

    /** 是否启用（1=启用，0=禁用） */
    @Excel(name = "是否启用", readConverterExp = "1==启用，0=禁用")
    private Integer isActive;

    /** 规则生效日期（如2023-11-01） */
    @Excel(name = "规则生效日期", readConverterExp = "如=2023-11-01")
    private Date effectiveDate;

    /** 规则失效日期（可为NULL表示永久有效） */
    @Excel(name = "规则失效日期", readConverterExp = "可=为NULL表示永久有效")
    private Date expiryDate;

    /** 创建人ID（如系统管理员ID） */
    @Excel(name = "创建人ID", readConverterExp = "如=系统管理员ID")
    private String creatorId;

    /** 创建人姓名（如"李四"） */
    @Excel(name = "创建人姓名")
    private String creatorName;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setItemName(String itemName)
    {
        this.itemName = itemName;
    }

    public String getItemName()
    {
        return itemName;
    }

    public void setCategoryCode(String categoryCode)
    {
        this.categoryCode = categoryCode;
    }

    public String getCategoryCode()
    {
        return categoryCode;
    }

    public void setCategoryName(String categoryName)
    {
        this.categoryName = categoryName;
    }

    public String getCategoryName()
    {
        return categoryName;
    }

    public void setProjectName(String projectName)
    {
        this.projectName = projectName;
    }

    public String getProjectName()
    {
        return projectName;
    }

    public void setBillingRule(String billingRule)
    {
        this.billingRule = billingRule;
    }

    public String getBillingRule()
    {
        return billingRule;
    }

    public void setRuleDescription(String ruleDescription)
    {
        this.ruleDescription = ruleDescription;
    }

    public String getRuleDescription()
    {
        return ruleDescription;
    }

    public void setIsActive(Integer isActive)
    {
        this.isActive = isActive;
    }

    public Integer getIsActive()
    {
        return isActive;
    }

    public void setEffectiveDate(Date effectiveDate)
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate()
    {
        return effectiveDate;
    }

    public void setExpiryDate(Date expiryDate)
    {
        this.expiryDate = expiryDate;
    }

    public Date getExpiryDate()
    {
        return expiryDate;
    }

    public void setCreatorId(String creatorId)
    {
        this.creatorId = creatorId;
    }

    public String getCreatorId()
    {
        return creatorId;
    }

    public void setCreatorName(String creatorName)
    {
        this.creatorName = creatorName;
    }

    public String getCreatorName()
    {
        return creatorName;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("itemName", getItemName())
                .append("categoryCode", getCategoryCode())
                .append("categoryName", getCategoryName())
                .append("projectName", getProjectName())
                .append("billingRule", getBillingRule())
                .append("ruleDescription", getRuleDescription())
                .append("isActive", getIsActive())
                .append("effectiveDate", getEffectiveDate())
                .append("expiryDate", getExpiryDate())
                .append("creatorId", getCreatorId())
                .append("creatorName", getCreatorName())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("phone", getPhone())
                .toString();
    }
}
